package com.engineering.elink.service;

import java.util.Map;

import com.engineering.elink.co.CourseAddCo;
import com.engineering.elink.co.CourseCo;
import com.zxy.core.co.BaseCo;

/**
 * 
 * 课程业务操作接口
 * ClassName: CourseService <br/> 
 * Function: ADD FUNCTION. <br/> 
 * Reason: ADD REASON(可选). <br/> 
 * date: 2016年10月17日 下午1:31:40 <br/> 
 * 
 * @author zengxinyan 
 * @version  
 * @since JDK 1.8
 */
public interface CourseService {
	
	/**
	 * 获取课程列表
	 * 
	 * getCoursesList:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getCoursesList(CourseCo co,String userId);
	
	/**
	 * 
	 * add:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param course 
	 * @since JDK 1.8
	 */
	Map<String,Object> add(CourseAddCo addCo,String userId);
	
	/**
	 * 
	 * update:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param course 
	 * @since JDK 1.8
	 */
	Map<String,Object> update(Integer courseId,CourseAddCo addCo,String userId);
	
	Map<String,Object> updateType(Integer courseId,Integer typeId);
	
	/**
	 * 获取热门推荐
	 * 
	 * getHotCourse:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getHotCourse(BaseCo co);
	
	/**
	 * 获取最近浏览课程
	 * 
	 * getBrowseCourse:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getBrowseCourse(BaseCo co);
	
	/**
	 * 
	 * 获取单个课程的详细信息
	 * 
	 * get:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param courseId
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> get(Integer courseId,String userId);
	
	/**
	 * 获取讲师最近6条的课程
	 * 
	 * getTeacherCourse:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getTeacherCourse(BaseCo co,String userId);
	
	/**
	 * 
	 * 获取6条相同分类的课程
	 * 
	 * getSameCourse:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getSameCourse(BaseCo co,Integer courseId);
	
	/**
	 * 
	 * 获取我的课程
	 * 
	 * getMyCourse:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @param userId
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String,Object> getMyCourse(BaseCo co,String userId);
	
	/**
	 * 获取所有讲师课程
	 * 
	 * getTeacherCourseList:(这里用一句话描述这个方法的作用). <br/> 
	 * (这里描述这个方法适用条件 – 可选).<br/> 
	 * (这里描述这个方法的执行流程 – 可选).<br/> 
	 * (这里描述这个方法的使用方法 – 可选).<br/> 
	 * (这里描述这个方法的注意事项 – 可选).<br/> 
	 * 
	 * @author zengxinyan 
	 * @param co
	 * @return 
	 * @since JDK 1.8
	 */
	Map<String, Object> getTeacherCourseList(BaseCo co);
}
